// stores/principleMenuStore.js
import { defineStore } from 'pinia';
import {computed, ref} from 'vue';

export const usePrincipleMenuStore = defineStore('principleMenu', () => {
    // 侧边栏菜单数据（支持三级结构）
    const menuItems = ref([
        {
            id: 'basic-principles',
            title: '发电机组基本原理教学',
            icon: 'Document',
            children: [
                {
                    id: 'principle-intro',
                    title: '原理介绍',
                    icon: 'Notebook',
                    children: [
                        {
                            id: '/principle/generator-body',
                            title: '发电机本体',
                            content: '发电机本体由定转子组成，是发电机的核心部件。',
                            image: '[](@replace=1)',
                            route: '/principle/generator-body'
                        },
                        {
                            id: '/principle/exciter',
                            title: '励磁机',
                            content: '励磁机提供发电机转子所需的直流励磁电流。',
                            image: '',
                            route: '/principle/exciter'
                        },
                        {
                            id: '/principle/rotating-rectifier',
                            title: '旋转整流器',
                            content: '旋转整流器将交流电转换为直流电供给励磁系统。',
                            image: '',
                            route: '/principle/rotating-rectifier'
                        },
                        {
                            id: '/principle/pilot-exciter',
                            title: '副励磁机',
                            content: '副励磁机为自动电压调节器提供电源。',
                            image: '',
                            route: '/principle/pilot-exciter'
                        },
                        {
                            id: '/principle/avr',
                            title: '自动电压调节器(AVR)',
                            content: 'AVR自动调节发电机输出电压保持稳定。',
                            image: '[](@replace=2)',
                            route: '/principle/avr'
                        },
                        {
                            id: '/principle/rectifier-device',
                            title: '整流装置',
                            content: '整流装置将交流电转换为直流电。',
                            image: '[](@replace=3)',
                            route: '/principle/rectifier-device'
                        },
                        {
                            id: '/principle/control-panel',
                            title: '机组控制屏',
                            content: '控制屏用于监控和操作发电机组运行状态。',
                            image: '',
                            route: '/principle/control-panel'
                        }
                    ]
                },
                {
                    id: 'circuit-diagrams',
                    title: '电路图或原理框图',
                    icon: 'DataAnalysis',
                    children: [
                        {
                            id: '/principle/rectifier-circuit',
                            title: '整流装置电路图',
                            content: '展示整流装置的详细电路连接方式。',
                            image: '[](@replace=4)',
                            route: '/principle/rectifier-circuit'
                        },
                        {
                            id: '/principle/excitation-topology',
                            title: '励磁装置拓扑图',
                            content: '展示励磁系统的拓扑结构和连接方式。',
                            image: '[](@replace=5)',
                            route: '/principle/excitation-topology'
                        },
                        {
                            id: '/principle/avr-block',
                            title: 'AVR闭环系统原理框图',
                            content: '展示自动电压调节器的闭环控制系统原理。',
                            image: '[](@replace=6)',
                            route: '/principle/avr-block'
                        }
                    ]
                },
                {
                    id: '3d-explosion',
                    title: '三维爆炸图',
                    icon: 'View',
                    children: [
                        {
                            id: '/principle/generator-explosion',
                            title: '发电机三维爆炸图',
                            content: '通过三维结构爆炸图展示发电机各部件的结构和位置关系。',
                            image: '[](@replace=7)',
                            route: '/principle/generator-explosion'
                        }
                    ]
                }
            ]
        },
        {
            id: 'operation-procedures',
            title: '发电机组操作流程教学',
            icon: 'Operation',
            children: [
                {
                    id: '/principle/preparation-check',
                    title: '使用前准备和检查',
                    content: '发电机检查、轴承及润滑油系统检查、通风冷却系统检查、安全防护等注意事项',
                    route: '/principle/preparation-check'
                },
                {
                    id: '/principle/startup-operation',
                    title: '起动及运行过程操作程序',
                    content: '单独运行和并联运行发电机启动及运行操作流程',
                    route: '/principle/startup-operation'
                },
                {
                    id: '/principle/monitoring-process',
                    title: '运行过程中的监测',
                    content: '定子温度、轴承温度监测、机械噪声检查、系统状态监测等',
                    route: '/principle/monitoring-process'
                },
                {
                    id: '/principle/shutdown-procedures',
                    title: '停止运行操作流程',
                    content: '停止运行操作流程及注意事项',
                    route: '/principle/shutdown-procedures'
                },
                {
                    id: '/principle/emergency-handling',
                    title: '应急处置流程',
                    content: '发电机异常情况应急处理流程',
                    images: [
                        '[](@replace=6)'
                    ],
                    route: '/principle/emergency-handling'
                }
            ]
        },
        {
            id: 'fault-mechanism',
            title: '典型故障机理教学',
            icon: 'Warning',
            children: [
                {
                    id: '/principle/fault-analysis',
                    title: '故障机理分析',
                    content: '通过图文并茂的形式对发电机组的故障机理进行分析',
                    image: '[](@replace=7)',
                    route: '/principle/fault-analysis'
                },
                {
                    id: '/principle/fault-maintenance',
                    title: '故障维修方法',
                    content: '通过图文并茂的形式对发电机组的故障维修方法进行说明',
                    image: '[](@replace=8)',
                    route: '/principle/fault-maintenance'
                }
            ]
        }
    ]);

    // 当前激活的菜单项
    const activeMenu = ref('/principle/generator-body');

    // 侧边栏折叠状态
    const isCollapsed = ref(false);

    // 默认展开的菜单项
    const openedMenus = ref(['basic-principles', 'principle-intro', 'circuit-diagrams', 'operation-procedures', 'fault-mechanism']);

    // 计算属性：当前激活的内容
    const activeContent = computed(() => {
        // 扁平化菜单数据
        const flattenMenuItems = (items) => {
            let result = [];
            items.forEach(item => {
                result.push(item);
                if (item.children && item.children.length) {
                    result = result.concat(flattenMenuItems(item.children));
                }
            });
            return result;
        };

        const flatItems = flattenMenuItems(menuItems.value);
        return flatItems.find(item => item.id === activeMenu.value) || {};
    });

    // 设置当前激活的菜单项
    function setActiveMenu(menuId) {
        activeMenu.value = menuId;
    }

    // 切换侧边栏折叠状态
    function toggleCollapse() {
        isCollapsed.value = !isCollapsed.value;
    }

    // 处理菜单展开状态
    function handleMenuOpen(keys) {
        openedMenus.value = keys;
    }

    return {
        menuItems,
        activeMenu,
        isCollapsed,
        openedMenus,
        activeContent,
        setActiveMenu,
        toggleCollapse,
        handleMenuOpen
    };
});